package com.atos.homecare.common.properties;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.apache.log4j.Logger;

import com.atos.homecare.common.exceptions.HCFileException;

/**
 * Chargement d'un fichier de properties
 * @author vbergout
 *
 */
public class PropertyLoader {
	
	//Logger
	private static final Logger log = Logger.getLogger(PropertyLoader.class);
	
	/**
	 * Chargement d'un fichier de propriétés
	 * @param filename
	 * @return
	 * @throws HCFileException 
	 * @throws IOException
	 * @throws FileNotFoundException
	 */
	public Properties load(String filename) throws HCFileException{
		log.info("Chargement du fichier de proprietes " + filename);
		Properties properties = new Properties();
	    InputStream input = null;
	    try{
	    	//chargement
	    	input = getClass().getResourceAsStream(filename);
	    	properties.load(input);	    	
	    	return properties;
		} catch (FileNotFoundException e) {
			log.error("Fichier non trouve " + filename, e);	
			throw new HCFileException(e);
		} catch (IOException e) {
			log.error("Erreur chargement fichier " + filename, e);
			throw new HCFileException(e);
	    } catch (RuntimeException e) {
	    	log.error("Erreur execution chargement fichier " + filename, e);
	    	throw new HCFileException(e);
	    }
	    finally{
	    	try {
	    		if(input != null)
	    			input.close();
			} catch (IOException e) {
				log.error("Erreur fermeture fichier properties " + filename , e);
			}
	    }
	}
}
